package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.CompanySaleRebatesRulesAddDTO;
import org.jsola.hr.dto.CompanySaleRebatesRulesUpdateDTO;
import org.jsola.hr.query.CompanySaleRebatesRulesQuery;
import org.jsola.hr.vo.CompanySaleRebatesRulesListVO;
import org.jsola.hr.vo.CompanySaleRebatesRulesVO;

import java.util.List;

/**
 * 用工单位返费关联表
 *
 * @author zhr
 */
@Api(tags = "hr-用工单位返费关联表")
public interface ICompanySaleRebatesRulesControllerAPI {

    /**
     * 新增用工单位返费关联表
     * @param companySaleRebatesRulesAddDTO 用工单位返费关联表新增实体
     * @return 用工单位返费关联表展示对象
     */
    @ApiOperation(value = "新增用工单位返费关联表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companySaleRebatesRulesAddDTO", dataType = "CompanySaleRebatesRulesAddDTO", value = "新增用工单位返费关联表", paramType = "body")
    })
    Result<CompanySaleRebatesRulesVO> save(CompanySaleRebatesRulesAddDTO companySaleRebatesRulesAddDTO);


    /**
     * 修改用工单位返费关联表
     * @param companySaleRebatesRulesUpdateDTO 用工单位返费关联表
     * @return 更新数量
     */
    @ApiOperation(value = "修改用工单位返费关联表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companySaleRebatesRulesUpdateDTO", dataType = "CompanySaleRebatesRulesUpdateDTO", value = "修改用工单位返费关联表", paramType = "body")
    })
    Result<Integer> update(CompanySaleRebatesRulesUpdateDTO companySaleRebatesRulesUpdateDTO);




    /**
     * 删除单个用工单位返费关联表，彻底删除
     * @param companySaleRebatesRulesId 用工单位返费关联表id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个用工单位返费关联表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companySaleRebatesRulesId", dataType = "String", value = "用工单位返费关联表id", paramType = "path")
    })
    Result<Integer> delete(String companySaleRebatesRulesId);


    /**
     * 批量删除用工单位返费关联表，彻底删除
     * @param companySaleRebatesRulesIds 用工单位返费关联表id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除用工单位返费关联表，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companySaleRebatesRulesIds", dataType = "String[]", value = "用工单位返费关联表id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(String[] companySaleRebatesRulesIds);


    /**
     * 根据用工单位返费关联表id查询用工单位返费关联表详情
     * @param companySaleRebatesRulesId 用工单位返费关联表id
     * @return 用工单位返费关联表详情
     */
    @ApiOperation(value="根据用工单位返费关联表id查询用工单位返费关联表详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companySaleRebatesRulesId", dataType = "String", value = "用工单位返费关联表id", paramType = "path")
    })
    Result<CompanySaleRebatesRulesVO> findById(String companySaleRebatesRulesId);


    /**
     * 查询用工单位返费关联表
     * @param companySaleRebatesRulesQuery 用工单位返费关联表查询参数
     * @return page
     */
    @ApiOperation(value="查询用工单位返费关联表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companySaleRebatesRulesQuery", dataType = "CompanySaleRebatesRulesQuery", value = "用工单位返费关联表查询参数", paramType = "query")
    })
    Result<List<CompanySaleRebatesRulesListVO>> listAll(CompanySaleRebatesRulesQuery companySaleRebatesRulesQuery);


     /**
     * 分页查询用工单位返费关联表
     * @param companySaleRebatesRulesQuery 用工单位返费关联表查询参数
     * @return page
     */
    @ApiOperation(value="分页查询用工单位返费关联表")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "companySaleRebatesRulesQuery", dataType = "CompanySaleRebatesRulesQuery", value = "用工单位返费关联表查询参数", paramType = "query")
    })
    Result<Page<CompanySaleRebatesRulesListVO>> page(CompanySaleRebatesRulesQuery companySaleRebatesRulesQuery);


}

